#include "KamaCoder.h"
using namespace std;

// 主函数，用于处理输入和输出结果
int KamaCoder105::run() {
  // 输入数据
  int n, m, s, t;
  cin >> n >> m;

  // 节点编号从1到n,所以申请 n+1
  vector<list<int>> graph(n + 1);  // 邻接表
  while (m--) {
    cin >> s >> t;
    // 表示 s->t
    graph[s].push_back(t);
  }
  // 节点是否遍历过
  vector<bool> visited(n + 1, false);
  // 深度搜索
  dfs(graph, visited, 1);

  // 检查是否都遍历过
  for (int i = 1; i <= n; i++) {
    if (!visited[i]) {
      cout << -1 << endl;
      return 0;
    }
  }
  cout << 1 << endl;
  return 0;
}

// 深度搜索
void KamaCoder105::dfs(vector<list<int>>& graph, vector<bool>& visited,
                       int key) {
  // 终止条件
  if (visited[key]) return;
  // 标记遍历过
  visited[key] = true;
  // 当前节点的邻接表
  list<int> curs = graph[key];
  // 遍历当前节点的所有邻接点
  for (int cur : curs) {
    dfs(graph, visited, cur);
  }
}